package cn.xiaobai.knife4j.spring.boot.config;

import cn.xiaobai.knife4j.spring.boot.factory.CommPropertySourceFactory;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

import java.util.List;


/**
 * swagger基础配置
 *
 * @author yangdaji
 * @date 2022/1/3
 */
@Data
@Component
@ConfigurationProperties(prefix = "swagger")
@PropertySource(value = {
        "classpath:application-swagger.yml"},
        encoding = "utf-8",
        factory = CommPropertySourceFactory.class
)
public class SwaggerProperties {

    /**
     * 项目名称
     */
    private String appName;

    /**
     * api集合
     */
    private List<Swagger> apis;


    /**
     * knife4j增强bean
     */
    @Data
    public static class Swagger {

        /**
         * 分组
         */
        private String groupName;

        /**
         * 基本包
         */
        private String basePackage;

        /**
         * 基本信息(title,description..version)
         */
        private APiInfo info;

        /**
         * 其他信息(name,url,email)
         */
        private Contact contact;


    }

    /**
     * api的信息
     */
    @Data
    public static class APiInfo {

        /**
         * 标题
         */
        private String title;
        /**
         * 描述
         */
        private String description;

        /**
         * url的服务条款
         */
        private String termsOfServiceUrl;
        /**
         * 版本
         */
        private String version;


    }

    /**
     * 联系信息
     */
    @Data
    public static class Contact {

        /**
         * 名字
         */
        private String name;
        /**
         * url
         */
        private String url;
        /**
         * 邮箱
         */
        private String email;

    }

}
